package cn.tedu.csmallproducts.repo;

import cn.tedu.csmallproducts.pojo.vo.AlbumListItemVO;
import cn.tedu.csmallproducts.pojo.vo.AlbumStandardVO;

import java.io.Serializable;
import java.util.List;

public interface IAlbumRedisRepository {
    /**
     * 数据详情的Key的前缀
     */
    String ITEM_KEY_PREFIX = "album:item:";
    /**
     * 所有数据详情的Key的集合的Key
     */
    String ALL_ITEM_KEYS_KEY = "album:all-item-keys";
    /**
     * 数据列表的Key
     */
    String LIST_KEY = "album:list";

    /**
     * 向Redis中存入相册数据
     * @param albumStandardVO 相册数据
     */
    void save (AlbumStandardVO albumStandardVO);

    /**
     * 向Redis中追加相册列表数据
     * @param albumListItemVOS 相册列表
     */
    void saveList(List<AlbumListItemVO> albumListItemVOS);

    //从Redis读取出某个相册数据

    /**
     * 向redis中读取相册数据
     * @param id 相册ID
     * @return 匹配的相册详情数据，如果没有匹配的数据，则返回null
     */
    AlbumStandardVO get (Long id);

    /**
     * 从Redis中获取相册列表
     * @return 相册列表
     */
    List<AlbumListItemVO> list();

    /**
     * 从Redis中读取相册列表数据
     * @param start 起始位置的下标，如果从头开始读取，则取值为0
     * @param end 结果位置的下标，如果读取至最后一条数据，则取值为-1
     * @return 相册列表
     */
    List<AlbumListItemVO> list(long start,long end);

    /**
     * 依据ID删除相册
     * @param id 相册ID
     * @return 受影响的行数
     */
    boolean delete(Long id);

    /**
     * 删除相册列表
     * @return
     */
    boolean deleteList();

    /**
     * 删除Redis中的全部相册详情数据
     *
     * @return 成功删除的数据的数量
     */
    long deleteAllItem();


}
